1. Field of the Invention
This invention relates generally to data transmission systems and more particularly to a method for dispatching updates to objects in a pre-defined set.
2. Description of the Related Art
With the widespread adoption of the Internet, more applications are becoming prevalent to disperse information over distributed networks. Multiple computers each having different capacity constraints are communicating with each other over these distributed networks. For example, as video conference becomes more popular the distribution of a presentation or video to multiple clients will naturally involve different computers with varying characteristics. As is generally known, the data is typically distributed in the form packets to each of the clients. The systems supporting multicasting, where a server sends data to multiple clients, such as for videoconferencing, include a module capable of distributing packets to a defined set of clients referred to as a multipoint dispatcher.
FIG. 1 is a simplified schematic of a multipoint dispatcher. Multipoint dispatcher 100 receives tiles from presentation capturing process 102. Presentation capturing process 102 is a process in which each of the clients is sent updated portions of a presentation, such as a slide show being video-conferenced. Thus, where only a portion of a slide changes between consecutive slides of the slideshow, only the changed portion of the slides is sent to each of the clients. For example, a certain tile, i.e., tile X which is a subset of the entire image, may differ from tile X of the previous capture. The packet containing tile X is dispatched to each of the clients wherein the client combines the tiles to reconstruct the original image.
The multipoint dispatcher manages the incremental disbursement of the changed portion of the slides. FIG. 2 is a simplified schematic of a buffer-less multipoint dispatcher configured to dispatch a new packet to three clients. Here new packet 104 is received by multipoint dispatcher 100 and distributed to clients 1–3. While a buffer-less multipoint dispatcher requires minimal memory resources and is easy to implement, the buffer-less multipoint dispatcher can only successfully serve a static set of clients that have sufficient bandwidth to keep up with the incoming packets. As the delivery is synchronous, each client has to be fast or the entire system will stall. In addition, each client will have to support the maximum speed of incoming packets. Therefore, each client will have to support a connection speed above the burst speed of the incoming packets since the packets can arrive in bursts.
FIG. 3 is a simplified schematic of a buffered multipoint dispatcher configured to distribute a received packet to three clients. Here, multipoint dispatcher 100 maintains buffers 106, 108, and 110 for clients 1–3, respectively. As new packet 104 is received, the packet is placed at the top of each of the client queues of buffers 106, 108 and 110. The packets are stored in the buffer and the packets at the bottom of the queue are sent to the respective client. Once sent, the packet is deleted from the queue. The delivery is a synchronous as the time for sending a packet to each client is different. The buffered multipoint dispatcher allows client to receive all their packets even if the clients have differing connection speeds. However, the buffered multipoint dispatcher is much more complex. Another shortcoming of the buffered multipoint dispatcher is that the memory requirements increase sharply with the number of clients since each client has a dedicated buffer. In some instances, especially where there are a large number of clients, the memory requirements may be prohibitive for support of such a system.
Another shortcoming of the above described multipoint dispatchers is that the addition of a new client is a cumbersome task. For example, a separate memory portion of the multipoint dispatcher is reserved for the original image data of the slide show or other type of presentation. This stored data is used for the initial addition of a new client, which further increases the memory requirements to support the system.
As a result, there is a need to solve the problems of the prior art to provide a method and apparatus for a multipoint dispatcher capable of supporting a large number of clients during a multicast operation through a multipoint dispatcher without requiring a large memory capacity. Additionally, the multipoint dispatcher is configured to easily add new clients.